package maxinshiSomeipTool20.GUI.common;

import org.eclipse.swt.widgets.Composite;
import maxinshiSomeipTool20.common.itfSafeSWT.BaseScene;

/**
 * 场景管理器：仅负责场景切换逻辑，不直接依赖具体场景类
 * 通过SceneFactory创建场景，符合开闭原则
 */
public class SceneManager {
    private Composite workArea;
    private BaseScene currentScene;

    public SceneManager(Composite workArea) {
        this.workArea = workArea;
    }

    /** 切换到指定场景（通过工厂创建，解耦） */
    public void switchScene(int sceneType) {
        // 销毁当前场景
        if (currentScene != null) {
            currentScene.clear();
        }

        // 通过工厂创建新场景（不再直接new具体场景）
        currentScene = SceneFactory.createScene(sceneType);
        currentScene.init(workArea);

        // 刷新布局
        if (workArea != null && !workArea.isDisposed()) {
            workArea.layout(true, true);
        }
    }

    public BaseScene getCurrentScene() {
        return currentScene;
    }
}